def quick_sort(arr):
    # 如果数组为空或只有一个元素，直接返回
    if len(arr) <= 1:
        return arr

    # 选择基准值（pivot），这里选择数组的第一个元素
    pivot = arr[0]

    # 将数组分为小于、等于和大于基准值的三部分
    less = [x for x in arr[1:] if x < pivot]
    equal = [x for x in arr if x == pivot]
    greater = [x for x in arr[1:] if x > pivot]

    # 递归排序小于和大于基准值的部分，然后将它们与等于基准值的部分拼接起来
    return quick_sort(less) + equal + quick_sort(greater)


# 测试代码
if __name__ == "__main__":
    test_array = [3, 6, 8, 10, 1, 2, 1]
    print("Original array:", test_array)
    sorted_array = quick_sort(test_array)
    print("Sorted array:", sorted_array)